// index.js
const app = getApp()

Page({
  data: {
    motto: '欢迎使用微服务小程序',
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    canIUseGetUserProfile: false,
    canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'),
    // 新增数据
    bannerList: [],
    serviceList: [
      {
        id: 1,
        name: '用户管理',
        icon: '/images/user.png',
        url: '/pages/user/user'
      },
      {
        id: 2,
        name: '订单管理',
        icon: '/images/order.png',
        url: '/pages/order/order'
      },
      {
        id: 3,
        name: '系统设置',
        icon: '/images/setting.png',
        url: '/pages/setting/setting'
      }
    ],
    loading: false
  },

  onLoad() {
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
    this.loadBanners()
    this.checkLoginStatus()
  },

  onShow() {
    this.checkLoginStatus()
  },

  // 检查登录状态
  checkLoginStatus() {
    const token = wx.getStorageSync('token')
    const userInfo = wx.getStorageSync('userInfo')

    if (token && userInfo) {
      this.setData({
        userInfo: userInfo,
        hasUserInfo: true
      })
    }
  },

  // 加载轮播图
  loadBanners() {
    this.setData({ loading: true })

    // 模拟数据
    const banners = [
      {
        id: 1,
        image: '/images/banner1.jpg',
        title: '微服务架构'
      },
      {
        id: 2,
        image: '/images/banner2.jpg',
        title: '高效开发'
      }
    ]

    setTimeout(() => {
      this.setData({
        bannerList: banners,
        loading: false
      })
    }, 1000)
  },

  // 获取用户信息
  getUserProfile(e) {
    wx.getUserProfile({
      desc: '用于完善用户资料',
      success: (res) => {
        console.log('获取用户信息成功:', res)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })

        // 保存用户信息
        wx.setStorageSync('userInfo', res.userInfo)

        // 调用登录接口
        this.login(res.userInfo)
      },
      fail: (err) => {
        console.error('获取用户信息失败:', err)
        wx.showToast({
          title: '获取用户信息失败',
          icon: 'none'
        })
      }
    })
  },

  // 登录
  login(userInfo) {
    wx.login({
      success: (res) => {
        if (res.code) {
          // 发送 res.code 到后台换取 openId, sessionKey, unionId
          wx.request({
            url: 'http://localhost:3000/api/miniprogram/login',
            method: 'POST',
            data: {
              code: res.code,
              userInfo: userInfo
            },
            success: (loginRes) => {
              console.log('登录成功:', loginRes.data)
              if (loginRes.data.code === 200) {
                wx.setStorageSync('token', loginRes.data.data.token)
                wx.showToast({
                  title: '登录成功',
                  icon: 'success'
                })
              }
            },
            fail: (err) => {
              console.error('登录失败:', err)
              wx.showToast({
                title: '登录失败',
                icon: 'none'
              })
            }
          })
        }
      }
    })
  },

  // 服务点击
  onServiceTap(e) {
    const { url } = e.currentTarget.dataset
    if (url) {
      wx.navigateTo({
        url: url
      })
    }
  },

  // 分享
  onShareAppMessage() {
    return {
      title: '微服务小程序',
      path: '/pages/index/index'
    }
  },

  onShareTimeline() {
    return {
      title: '微服务小程序'
    }
  }
})
